import java.util.Random;
import java.util.Scanner;

/**
 * 加减法口算练习系统 V0.1
 * 功能：生成50道100以内的加减法算式习题
 */
public class Calculation_System_V01 {
    
    /**
     * 题目生成器类
     * 负责生成随机加减法题目
     */
    static class QuestionGenerator {
        private Random random;
        
        public QuestionGenerator() {
            this.random = new Random();
        }
        
        /**
         * 生成一道随机加减法题目
         * @param questionNumber 题目序号
         * @return 包含题目信息的数组：[题目字符串, 正确答案]
         */
        public Object[] generateQuestion(int questionNumber) {
            // 生成两个100以内的随机数
            int num1 = random.nextInt(100);
            int num2 = random.nextInt(100);
            
            // 随机决定是加法还是减法（0表示加法，1表示减法）
            int operation = random.nextInt(2);
            
            int correctAnswer;
            String question;
            
            if (operation == 0) {
                // 加法
                correctAnswer = num1 + num2;
                question = "第" + questionNumber + "题: " + num1 + " + " + num2 + " = ";
            } else {
                // 减法，确保结果非负
                if (num1 < num2) {
                    // 交换两个数，确保减法结果非负
                    int temp = num1;
                    num1 = num2;
                    num2 = temp;
                }
                correctAnswer = num1 - num2;
                question = "第" + questionNumber + "题: " + num1 + " - " + num2 + " = ";
            }
            
            return new Object[] {question, correctAnswer};
        }
        
        /**
         * 一次性生成所有题目
         * @param totalQuestions 总题目数
         * @return 题目数组，每个元素是包含[题目字符串, 正确答案]的数组
         */
        public Object[][] generateAllQuestions(int totalQuestions) {
            Object[][] allQuestions = new Object[totalQuestions][2];
            for (int i = 0; i < totalQuestions; i++) {
                allQuestions[i] = generateQuestion(i + 1);
            }
            return allQuestions;
        }
    }
    
    /**
     * 计算器类
     * 负责检查用户答案是否正确
     */
    static class Calculator {
        /**
         * 检查用户答案是否正确
         * @param userAnswer 用户输入的答案
         * @param correctAnswer 正确答案
         * @return 是否正确
         */
        public boolean checkAnswer(int userAnswer, int correctAnswer) {
            return userAnswer == correctAnswer;
        }
    }
    
    /**
     * 用户交互类
     * 负责处理用户输入输出
     */
    static class UserInterface {
        private Scanner scanner;
        
        public UserInterface() {
            this.scanner = new Scanner(System.in);
        }
        
        /**
         * 显示欢迎信息
         */
        public void showWelcomeMessage() {
            System.out.println("===== 加减法口算练习系统-v0.1 =====");
            System.out.println("请在下方输入答案，按Enter键确认。");
            System.out.println("\n开始答题：");
        }
        
        /**
         * 显示题目并获取用户答案
         * @param question 题目字符串
         * @return 用户输入的答案
         */
        public int getUserAnswer(String question) {
            System.out.print(question);
            return scanner.nextInt();
        }
        
        /**
         * 显示答案反馈
         * @param isCorrect 是否正确
         * @param correctAnswer 正确答案
         */
        public void showFeedback(boolean isCorrect, int correctAnswer) {
            if (isCorrect) {
                System.out.println("答案正确！");
            } else {
                System.out.println("答案错误！正确答案是: " + correctAnswer);
            }
        }
        
        /**
         * 显示最终成绩统计
         * @param totalQuestions 总题目数
         * @param correctCount 正确题目数
         */
        public void showResult(int totalQuestions, int correctCount) {
            System.out.println("\n===== 练习完成 =====");
            System.out.println("总题目数: " + totalQuestions);
            System.out.println("答对题目数: " + correctCount);
            System.out.println("正确率: " + String.format("%.1f", (correctCount / (double)totalQuestions) * 100) + "%");
        }
        
        /**
         * 关闭扫描器
         */
        public void close() {
            scanner.close();
        }
    }
    
    /**
     * 成绩统计类
     * 负责记录和计算成绩
     */
    static class ScoreManager {
        private int totalQuestions;
        private int correctCount;
        
        public ScoreManager(int totalQuestions) {
            this.totalQuestions = totalQuestions;
            this.correctCount = 0;
        }
        
        /**
         * 记录答对的题目
         */
        public void recordCorrectAnswer() {
            correctCount++;
        }
        
        /**
         * 获取正确题目数
         * @return 正确题目数
         */
        public int getCorrectCount() {
            return correctCount;
        }
        
        /**
         * 获取总题目数
         * @return 总题目数
         */
        public int getTotalQuestions() {
            return totalQuestions;
        }
    }
    
    public static void main(String[] args) {
        // 初始化题目生成器
        QuestionGenerator questionGenerator = new QuestionGenerator();
        int totalQuestions = 50;
        
        // 一次性生成所有题目
        Object[][] allQuestions = questionGenerator.generateAllQuestions(totalQuestions);
        
        // 输出所有题目
        for (int i = 0; i < totalQuestions; i++) {
            System.out.println(allQuestions[i][0]);
        }
    }
}